package com.kexin.common.user.service.impl;

import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.kexin.common.user.entity.ConfigData;
import com.kexin.common.user.mapper.ConfigDataMapper;
import com.kexin.common.user.service.IConfigDataService;

/**
 * 系统保存的配置数据表 服务实现类
 * @author ao
 * @since 2021-07-22
 */
@Service
public class ConfigDataServiceImpl extends ServiceImpl<ConfigDataMapper, ConfigData> implements IConfigDataService {

	@Override
	public void saveData(String key, String value) {
		if (StringUtils.isBlank(key)) {
			return;
		}
		synchronized (key.intern()) {
			key = key.trim();
			QueryWrapper<ConfigData> query = Wrappers.query();
			query.eq("config_key", key);
			if (count(query)>0) {
				//存在就更新
				UpdateWrapper<ConfigData> update = Wrappers.update();
				update.eq("config_key", key);
				update.set("config_value", value);
				update(update);
			} else {
				//不存在就创建
				ConfigData configData = new ConfigData();
				configData.setConfigKey(key);
				configData.setConfigValue(value);
				save(configData);
			}
		}
	}

	@Override
	public String getValue(String key) {
		if (StringUtils.isBlank(key)) {
			return key;
		}
		key = key.trim();
		QueryWrapper<ConfigData> query = Wrappers.query();
		query.eq("config_key", key);
		ConfigData configData = getOne(query, false);
		if (configData==null) {
			return null;
		}
		return configData.getConfigValue();
	}

}
